#ifndef AEAMPINFOTAB_H
#define AEAMPINFOTAB_H

#include <QWidget>
#include <QHBoxLayout>
#include "tabframe/mapinfo/mapinfotab.h"

class AEAmpFeature;

class AEAmpInfoTab : public MapInfoTab
{
    Q_OBJECT
public:
    explicit AEAmpInfoTab(QWidget *parent = nullptr);
    virtual ~AEAmpInfoTab();

public:
/**
 * @brief 设置检测数据类型编码
 * @param code 数据类型编码
 */
    void setDataTypeCode(uint8_t code) override;

/**
 * @brief 设置图谱数据长度
 * @param length 数据长度
 */
    void setDataLength(int32_t length) override;

/**
 * @brief 设置图谱生成时间
 * @param time 生成时间
 */
    void setCreateTime(const QString& time) override;

/**
* @brief 设置图谱性质
* @param property 图谱性质
*/
    void setChartProperty(const DataSpecificationGW::SpectrumCharacter& property) override;

/**
 * @brief 设置被测设备名称
 * @param name 设备名称
 */
    void setDeviceName(const QString& name) override;

/**
* @brief 设置被测设备编码
* @param code 设备编码
*/
    void setDeviceCode(const QString& code) override;

/**
* @brief 设置测点名称
* @param name 测点名称
*/
    void setMeasurementName(const QString& name) override;

/**
* @brief 设置测点编码
* @param code 测点编码
*/
    void setMeasurementCode(const QString& code) override;

/**
* @brief 设置检测通道标志
* @param flag 通道标志
*/
    void setChannelFlag(int64_t flag) override;

/**
* @brief 设置存储数据类型
* @param type 数据类型
*/
    void setDataType(uint8_t type) override;

/**
* @brief 设置幅值单位
* @param unit 幅值单位
*/
    void setAmplitudeUnit(uint8_t unit) override;

/**
* @brief 设置幅值下限
* @param lowerLimit 下限值
*/
    void setAmplitudeLowerLimit(float lowerLimit) override;

/**
* @brief 设置幅值上限
* @param upperLimit 上限值
*/
    void setAmplitudeUpperLimit(float upperLimit) override;

/**
* @brief 设置超声波传感器类型
* @param type 传感器类型
*/
    void setUltrasonicSensorType(float type) override;

/**
* @brief 设置数据点数
* @param count 数据点数
*/
    void setDataPointCount(int32_t count) override;

/**
* @brief 设置试验频率
* @param frequency 频率值
*/
    void setTestFrequency(float frequency) override;

/**
* @brief 设置放电类型概率
* @param probability 概率值
*/
    void setDischargeTypeProbability(const QString& probability) override;

/**
* @brief 设置信号最大值
* @param value 最大值
*/
    void setSignalMaxValue(float value) override;

/**
* @brief 设置信号有效值
* @param value 有效值
*/
    void setSignalRMSValue(float value) override;

/**
* @brief 设置50Hz相关性
* @param correlation 相关性值
*/
    void setCorrelation50Hz(float correlation) override;

/**
* @brief 设置100Hz相关性
* @param correlation 相关性值
*/
    void setCorrelation100Hz(float correlation) override;

/**
* @brief 设置频带
* @param band 频带
*/
    void setFrequencyBand(uint8_t band) override;

/**
* @brief 设置下限频率
* @param lowerFreq 下限频率
*/
    void setLowerFrequency(float lowerFreq) override;

/**
* @brief 设置上限频率
* @param upperFreq 上限频率
*/
    void setUpperFrequency(float upperFreq) override;

/**
* @brief 设置背景文件名称
* @param fileName 文件名
*/
    void setBackgroundFileName(const QString& fileName) override;

/**
* @brief 设置预留数据
* @param byte 预留数据
*/
    void setReservedData(const QByteArray& byte) override;

private:
    QTableWidgetItem *createTableWidgetItem(const QString& text);

private:
    QTableWidget* m_pTable;
    QGroupBox* m_pChartBox;
    QTextEdit* m_pChartData;
    QHBoxLayout* m_pMainLayout;
    QHBoxLayout* m_pLayout;
    std::shared_ptr<AEAmpFeature> m_aeAmpFeature;
};

#endif // AEAMPINFOTAB_H
